<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      function Tab(divs) {
        this.divs = divs;
        console.log("this1", this); // 指向实例化对象
      }
      // 构造函数的方法里需要用到构造函数里的属性
      Tab.prototype.fn = function () {
        console.log("this1", this); // 指向实例化对象
      };
      Tab.prototype.fn2 = function () {
        var that = this;
        document.onclick = function () {
          console.log("this2", this); // 指向事件源
          console.log("this1", that);
        };
      };
      Tab.prototype.fn3 = function () {
        this.divs.forEach(function () {
          console.log("this3", this); // 指向 window
        });
      };

      var tab = new Tab(["张三", "李四", "王五"]);
      tab.fn();
      tab.fn2();
      tab.fn3();

      /* 
        this指向 有3个 
            1.this 指向 实例化对象 ：构造函数 和 构造函数原型方法里
            2.this 指向事件源 onclick 里 点的谁就指向谁 
            3. forEach 里的this 指向window
      */
    </script>
  </body>
</html>
